package com.escom.activity;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;

import com.escom.R;
import com.escom.dao.PacienteDAO;
import com.escom.entidad.PacienteItem;
import com.escom.entidad.PacienteVO;
import com.escom.utils.Constantes;
import com.escom.utils.CustomPacienteAdapter;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Carlos on 7/04/14.
 */
public class PacientesFragment extends Fragment {

    private List<PacienteVO> pacientes;
    private SharedPreferences sharedpreferences;
    private String idMedico;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View viewActivity = inflater.inflate(R.layout.fragment_paciente, container, false);
        Context context = getActivity().getBaseContext();
        sharedpreferences = getActivity().getSharedPreferences(Constantes.MY_PREFERENCES, Context.MODE_PRIVATE);
        idMedico = sharedpreferences.getString(Constantes.ID_MEDICO_KEY, null);
        ListView listViewPacientes = (ListView) viewActivity.findViewById(R.id.listViewPacientes);

        PacienteDAO pacienteDAO = new PacienteDAO(context);
        pacientes = pacienteDAO.retrievePacientesByMedico(idMedico);

        List<PacienteItem> pacienteItemList = createPacienteItem(pacientes);
        CustomPacienteAdapter customPacienteAdapter
                = new CustomPacienteAdapter(viewActivity.getContext(), R.layout.custom_paciente_item, pacienteItemList);
        listViewPacientes.setAdapter(customPacienteAdapter);

        //Agregar ContextMenu
        registerForContextMenu(listViewPacientes);

        return viewActivity;
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderIcon(R.drawable.ic_action_about);
        menu.setHeaderTitle("Seleccione una opción");
        MenuInflater inflater = getActivity().getMenuInflater();
        inflater.inflate(R.menu.context_paciente, menu);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
        int positionContext = info.position;
        //Log.d(Constantes.LOG_ID, this.getClass().getName() + " Posicion: " + positionContext);

        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString(Constantes.ID_PACIENTE_KEY, pacientes.get(positionContext).getIdPaciente());
        editor.commit();

        Fragment fragment;
        FragmentManager fragmentManager = getFragmentManager();
        Intent intent;
        switch (item.getItemId()) {
            case R.id.mnuCtxIniciarEstudio:
                intent = new Intent(getActivity().getApplicationContext(), EstudioActivity.class);
                startActivity(intent);
                return true;
            case R.id.mnuCtxExpediente:
                intent = new Intent(getActivity().getApplicationContext(), ExpedienteActivity.class);
                startActivity(intent);
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }

    public List<PacienteItem> createPacienteItem(List<PacienteVO> pacientes){
        List<PacienteItem> pacientesItem = new ArrayList<PacienteItem>();
        if(pacientes != null && !pacientes.isEmpty()){
            for(int i = 0; i < pacientes.size(); i++){
                PacienteItem pacienteItem = new PacienteItem();
                PacienteVO paciente = pacientes.get(i);
                pacienteItem.setExist(true);
                pacienteItem.setNombre(paciente.getNombre() + " " + paciente.getApPaterno() + " " + paciente.getApMaterno());
                pacienteItem.setNoSeguroSocial(paciente.getNoSeguroSocial());
                pacientesItem.add(pacienteItem);
            }
        }else{
            PacienteItem pacienteItem = new PacienteItem();
            pacienteItem.setExist(false);
            pacientesItem.add(pacienteItem);
        }
        return  pacientesItem;
    }

}
